A test group is how you create a test fixture. This actually creates a class with CppUTestGroup as a prefix. So this creates the following definitions:
int externTestGroupStateBasedLoginValidator =0;struct CppUTestGroupStateBasedLoginValidator : public Utest
What follows is {};, which finish off the creation of the class
There are several things worth pointing out:
TEST_SETUP is a per-test fixture setup function. that is, each time one of the tests run, this setup method will be called.
TEST_TEARDOWN is a per-test fixture teardown. After the test executes, this code is called.
If you happen to use any classes that use things from std:: such as std::string std::vector, you'll find out that you'll want to use new and delete in the setup and teardown methods, or CppUTest will report some memory leaks.
Important, the ";" is necessary after the closing } on the definition of a test group.
TEST
A test is an individual, focused test. You first mention its test group and then its name. This actually creates a class prefixed with "testGroup" and suffixed with Test. So in this example, we end up with the following definition:
class testGroupfirstLoginSuccessfulTest :public CppUTestGroupfirstLoginSuccessful {/* ... */};
Note:
CHECK verifies that some Boolean condition is true. This is one of number of available assertion methods.
Verify condition is true. If not, report the name and line of the file where the condition fails using the preprocessor-defined macros __FILE__, __LINE__.
CHECK_LOCATION
condition,file,line
Verify condition is true. If not, report the file and line provided to th macro.
CHECK_EQUAL
expected,actual
Check that actual is equal to expected and report if they are not. For this to work, expected and actual are compared using != and when an error is reported, there needs to be a function called StringFrom that converts the result to a SimpleString (see SimpleString.h) or a const char*.
STRCMP_EQUAL
expected,actual
Compare two char*'s using strcmp. If they are not equal, report the __FILE__ and __LINE__ where the check was made.
STRCMP_EQUAL_LOCATION
expected,actual,file,line
Same as STRCMP_EQUAL, you provide the file and line information..
LONGS_EQUAL
expected,actual
Compare two integer values (long or smaller) for equality. If they are not equal, report the __FILE__ and __LINE__ where the check occurred.
LONGS_EQUAL_LOCATION
expected,actual,file,line
Same as LONGS_EQUAL, you define the file and line information.
DOUBLES_EQUAL
expected,actual
Same as LONGS_EQUAL but using doubles.
DOUBLES_EQUAL_LOCATION
expected,actual,file,line
Same as DOUBLES_EQUAL, you provide the file and line information.
FAIL
text
Fail at this line and report text as the reason.
FAIL_LOCATION
text,file,line
Same as FAIL, you provide the file and line information.
Using CppULite
There are three parts to using CppULite
Creating a main
This is a one-time thing in any project. This example runs a text runner and reports errors:Creating a test
Here's part of a file to test code to validate logging in using the state pattern:TEST_GROUP
A test group is how you create a test fixture. This actually creates a class with CppUTestGroup as a prefix. So this creates the following definitions:What follows is {};, which finish off the creation of the class
There are several things worth pointing out:
If you happen to use any classes that use things from std:: such as std::string std::vector, you'll find out that you'll want to use new and delete in the setup and teardown methods, or CppUTest will report some memory leaks.
Important, the ";" is necessary after the closing } on the definition of a test group.
TEST
A test is an individual, focused test. You first mention its test group and then its name. This actually creates a class prefixed with "testGroup" and suffixed with Test. So in this example, we end up with the following definition:Note:
CppUTest assertion methods: